/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package iTraceMD;

import org.eclipse.emf.cdo.CDOObject;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Element Trace Link</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link iTraceMD.ElementTraceLink#getNameModelTrace <em>Name Model Trace</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getVersion <em>Version</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getCreatedOn <em>Created On</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getMode <em>Mode</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getComment <em>Comment</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getTechnicalBinding <em>Technical Binding</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getTypeLink <em>Type Link</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getRelationType <em>Relation Type</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getModelName <em>Model Name</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getAbstractionLevel <em>Abstraction Level</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#isMetamodel <em>Metamodel</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getAspect <em>Aspect</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getRuleName <em>Rule Name</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getCreatedBy <em>Created By</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getTransformationType <em>Transformation Type</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getBelongs <em>Belongs</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getRef <em>Ref</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getTraceLink <em>Trace Link</em>}</li>
 *   <li>{@link iTraceMD.ElementTraceLink#getElement <em>Element</em>}</li>
 * </ul>
 * </p>
 *
 * @see iTraceMD.ITraceMDPackage#getElementTraceLink()
 * @model
 * @extends CDOObject
 * @generated
 */
public interface ElementTraceLink extends CDOObject {
	/**
	 * Returns the value of the '<em><b>Name Model Trace</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Name Model Trace</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Name Model Trace</em>' attribute.
	 * @see #setNameModelTrace(String)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_NameModelTrace()
	 * @model required="true"
	 * @generated
	 */
	String getNameModelTrace();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getNameModelTrace <em>Name Model Trace</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Name Model Trace</em>' attribute.
	 * @see #getNameModelTrace()
	 * @generated
	 */
	void setNameModelTrace(String value);

	/**
	 * Returns the value of the '<em><b>Version</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Version</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Version</em>' attribute.
	 * @see #setVersion(int)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_Version()
	 * @model required="true"
	 * @generated
	 */
	int getVersion();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getVersion <em>Version</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Version</em>' attribute.
	 * @see #getVersion()
	 * @generated
	 */
	void setVersion(int value);

	/**
	 * Returns the value of the '<em><b>Created On</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Created On</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Created On</em>' attribute.
	 * @see #setCreatedOn(String)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_CreatedOn()
	 * @model required="true"
	 * @generated
	 */
	String getCreatedOn();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getCreatedOn <em>Created On</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Created On</em>' attribute.
	 * @see #getCreatedOn()
	 * @generated
	 */
	void setCreatedOn(String value);

	/**
	 * Returns the value of the '<em><b>Mode</b></em>' attribute.
	 * The literals are from the enumeration {@link iTraceMD.LinkMode}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Mode</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Mode</em>' attribute.
	 * @see iTraceMD.LinkMode
	 * @see #setMode(LinkMode)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_Mode()
	 * @model required="true"
	 * @generated
	 */
	LinkMode getMode();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getMode <em>Mode</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Mode</em>' attribute.
	 * @see iTraceMD.LinkMode
	 * @see #getMode()
	 * @generated
	 */
	void setMode(LinkMode value);

	/**
	 * Returns the value of the '<em><b>Comment</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Comment</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Comment</em>' attribute.
	 * @see #setComment(String)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_Comment()
	 * @model
	 * @generated
	 */
	String getComment();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getComment <em>Comment</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Comment</em>' attribute.
	 * @see #getComment()
	 * @generated
	 */
	void setComment(String value);

	/**
	 * Returns the value of the '<em><b>Technical Binding</b></em>' attribute.
	 * The literals are from the enumeration {@link iTraceMD.TechnicalBinding}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Technical Binding</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Technical Binding</em>' attribute.
	 * @see iTraceMD.TechnicalBinding
	 * @see #setTechnicalBinding(TechnicalBinding)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_TechnicalBinding()
	 * @model required="true"
	 * @generated
	 */
	TechnicalBinding getTechnicalBinding();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getTechnicalBinding <em>Technical Binding</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Technical Binding</em>' attribute.
	 * @see iTraceMD.TechnicalBinding
	 * @see #getTechnicalBinding()
	 * @generated
	 */
	void setTechnicalBinding(TechnicalBinding value);

	/**
	 * Returns the value of the '<em><b>Type Link</b></em>' attribute.
	 * The literals are from the enumeration {@link iTraceMD.TypeLink}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Type Link</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Type Link</em>' attribute.
	 * @see iTraceMD.TypeLink
	 * @see #setTypeLink(TypeLink)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_TypeLink()
	 * @model required="true"
	 * @generated
	 */
	TypeLink getTypeLink();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getTypeLink <em>Type Link</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Type Link</em>' attribute.
	 * @see iTraceMD.TypeLink
	 * @see #getTypeLink()
	 * @generated
	 */
	void setTypeLink(TypeLink value);

	/**
	 * Returns the value of the '<em><b>Relation Type</b></em>' attribute.
	 * The literals are from the enumeration {@link iTraceMD.RelationType}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Relation Type</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Relation Type</em>' attribute.
	 * @see iTraceMD.RelationType
	 * @see #setRelationType(RelationType)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_RelationType()
	 * @model required="true"
	 * @generated
	 */
	RelationType getRelationType();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getRelationType <em>Relation Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Relation Type</em>' attribute.
	 * @see iTraceMD.RelationType
	 * @see #getRelationType()
	 * @generated
	 */
	void setRelationType(RelationType value);

	/**
	 * Returns the value of the '<em><b>Model Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Model Name</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Model Name</em>' attribute.
	 * @see #setModelName(String)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_ModelName()
	 * @model required="true"
	 * @generated
	 */
	String getModelName();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getModelName <em>Model Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Model Name</em>' attribute.
	 * @see #getModelName()
	 * @generated
	 */
	void setModelName(String value);

	/**
	 * Returns the value of the '<em><b>Abstraction Level</b></em>' attribute.
	 * The literals are from the enumeration {@link iTraceMD.AbstractionLevel}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Abstraction Level</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Abstraction Level</em>' attribute.
	 * @see iTraceMD.AbstractionLevel
	 * @see #setAbstractionLevel(AbstractionLevel)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_AbstractionLevel()
	 * @model required="true"
	 * @generated
	 */
	AbstractionLevel getAbstractionLevel();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getAbstractionLevel <em>Abstraction Level</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Abstraction Level</em>' attribute.
	 * @see iTraceMD.AbstractionLevel
	 * @see #getAbstractionLevel()
	 * @generated
	 */
	void setAbstractionLevel(AbstractionLevel value);

	/**
	 * Returns the value of the '<em><b>Metamodel</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Metamodel</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Metamodel</em>' attribute.
	 * @see #setMetamodel(boolean)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_Metamodel()
	 * @model required="true"
	 * @generated
	 */
	boolean isMetamodel();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#isMetamodel <em>Metamodel</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Metamodel</em>' attribute.
	 * @see #isMetamodel()
	 * @generated
	 */
	void setMetamodel(boolean value);

	/**
	 * Returns the value of the '<em><b>Aspect</b></em>' attribute.
	 * The literals are from the enumeration {@link iTraceMD.Aspect}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Aspect</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Aspect</em>' attribute.
	 * @see iTraceMD.Aspect
	 * @see #setAspect(Aspect)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_Aspect()
	 * @model required="true"
	 * @generated
	 */
	Aspect getAspect();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getAspect <em>Aspect</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Aspect</em>' attribute.
	 * @see iTraceMD.Aspect
	 * @see #getAspect()
	 * @generated
	 */
	void setAspect(Aspect value);

	/**
	 * Returns the value of the '<em><b>Rule Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Rule Name</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Rule Name</em>' attribute.
	 * @see #setRuleName(String)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_RuleName()
	 * @model
	 * @generated
	 */
	String getRuleName();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getRuleName <em>Rule Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Rule Name</em>' attribute.
	 * @see #getRuleName()
	 * @generated
	 */
	void setRuleName(String value);

	/**
	 * Returns the value of the '<em><b>Created By</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Created By</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Created By</em>' attribute.
	 * @see #setCreatedBy(String)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_CreatedBy()
	 * @model
	 * @generated
	 */
	String getCreatedBy();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getCreatedBy <em>Created By</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Created By</em>' attribute.
	 * @see #getCreatedBy()
	 * @generated
	 */
	void setCreatedBy(String value);

	/**
	 * Returns the value of the '<em><b>Transformation Type</b></em>' attribute.
	 * The literals are from the enumeration {@link iTraceMD.TransformationType}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Transformation Type</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Transformation Type</em>' attribute.
	 * @see iTraceMD.TransformationType
	 * @see #setTransformationType(TransformationType)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_TransformationType()
	 * @model
	 * @generated
	 */
	TransformationType getTransformationType();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getTransformationType <em>Transformation Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Transformation Type</em>' attribute.
	 * @see iTraceMD.TransformationType
	 * @see #getTransformationType()
	 * @generated
	 */
	void setTransformationType(TransformationType value);

	/**
	 * Returns the value of the '<em><b>Belongs</b></em>' container reference.
	 * It is bidirectional and its opposite is '{@link iTraceMD.iTraceMDModel#getComposes <em>Composes</em>}'.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Belongs</em>' container reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Belongs</em>' container reference.
	 * @see #setBelongs(iTraceMDModel)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_Belongs()
	 * @see iTraceMD.iTraceMDModel#getComposes
	 * @model opposite="composes" required="true" transient="false"
	 * @generated
	 */
	iTraceMDModel getBelongs();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getBelongs <em>Belongs</em>}' container reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Belongs</em>' container reference.
	 * @see #getBelongs()
	 * @generated
	 */
	void setBelongs(iTraceMDModel value);

	/**
	 * Returns the value of the '<em><b>Ref</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Ref</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Ref</em>' reference.
	 * @see #setRef(EObject)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_Ref()
	 * @model required="true"
	 * @generated
	 */
	EObject getRef();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getRef <em>Ref</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Ref</em>' reference.
	 * @see #getRef()
	 * @generated
	 */
	void setRef(EObject value);

	/**
	 * Returns the value of the '<em><b>Trace Link</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Trace Link</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Trace Link</em>' attribute.
	 * @see #setTraceLink(String)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_TraceLink()
	 * @model required="true"
	 * @generated
	 */
	String getTraceLink();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getTraceLink <em>Trace Link</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Trace Link</em>' attribute.
	 * @see #getTraceLink()
	 * @generated
	 */
	void setTraceLink(String value);

	/**
	 * Returns the value of the '<em><b>Element</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Element</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Element</em>' attribute.
	 * @see #setElement(String)
	 * @see iTraceMD.ITraceMDPackage#getElementTraceLink_Element()
	 * @model required="true"
	 * @generated
	 */
	String getElement();

	/**
	 * Sets the value of the '{@link iTraceMD.ElementTraceLink#getElement <em>Element</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Element</em>' attribute.
	 * @see #getElement()
	 * @generated
	 */
	void setElement(String value);

} // ElementTraceLink
